/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package behaviourdiagram.impl;

import behaviourdiagram.Actuator;
import behaviourdiagram.Behaviour;
import behaviourdiagram.BehaviourInput;
import behaviourdiagram.BehaviourOutput;
import behaviourdiagram.BehaviourState;
import behaviourdiagram.BehaviourdiagramFactory;
import behaviourdiagram.BehaviourdiagramPackage;
import behaviourdiagram.Mission;
import behaviourdiagram.Sensor;

import fsm.FsmPackage;

import fsm.impl.FsmPackageImpl;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class BehaviourdiagramPackageImpl extends EPackageImpl implements BehaviourdiagramPackage {
	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass missionEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass sensorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass behaviourEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass actuatorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass behaviourStateEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass behaviourInputEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass behaviourOutputEClass = null;

	/**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see behaviourdiagram.BehaviourdiagramPackage#eNS_URI
   * @see #init()
   * @generated
   */
	private BehaviourdiagramPackageImpl() {
    super(eNS_URI, BehaviourdiagramFactory.eINSTANCE);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private static boolean isInited = false;

	/**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link BehaviourdiagramPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
	public static BehaviourdiagramPackage init() {
    if (isInited) return (BehaviourdiagramPackage)EPackage.Registry.INSTANCE.getEPackage(BehaviourdiagramPackage.eNS_URI);

    // Obtain or create and register package
    BehaviourdiagramPackageImpl theBehaviourdiagramPackage = (BehaviourdiagramPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof BehaviourdiagramPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new BehaviourdiagramPackageImpl());

    isInited = true;

    // Obtain or create and register interdependencies
    FsmPackageImpl theFsmPackage = (FsmPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(FsmPackage.eNS_URI) instanceof FsmPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(FsmPackage.eNS_URI) : FsmPackage.eINSTANCE);

    // Create package meta-data objects
    theBehaviourdiagramPackage.createPackageContents();
    theFsmPackage.createPackageContents();

    // Initialize created meta-data
    theBehaviourdiagramPackage.initializePackageContents();
    theFsmPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theBehaviourdiagramPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(BehaviourdiagramPackage.eNS_URI, theBehaviourdiagramPackage);
    return theBehaviourdiagramPackage;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getMission() {
    return missionEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getMission_Sensor() {
    return (EReference)missionEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getMission_Behaviours() {
    return (EReference)missionEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getMission_Actuator() {
    return (EReference)missionEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getSensor() {
    return sensorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getSensor_Name() {
    return (EAttribute)sensorEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getSensor_Type() {
    return (EAttribute)sensorEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getSensor_Input() {
    return (EReference)sensorEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getBehaviour() {
    return behaviourEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviour_Name() {
    return (EAttribute)behaviourEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviour_Priority() {
    return (EAttribute)behaviourEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviour_RepresentedBy() {
    return (EReference)behaviourEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviour_State() {
    return (EReference)behaviourEClass.getEStructuralFeatures().get(3);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviour_Inputs() {
    return (EReference)behaviourEClass.getEStructuralFeatures().get(4);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviour_Outputs() {
    return (EReference)behaviourEClass.getEStructuralFeatures().get(5);
  }

	/**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBehaviour_InputCondition()
  {
    return (EAttribute)behaviourEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getBehaviour_OutputCondition()
  {
    return (EAttribute)behaviourEClass.getEStructuralFeatures().get(7);
  }

  /**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getActuator() {
    return actuatorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getActuator_Name() {
    return (EAttribute)actuatorEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getActuator_Type() {
    return (EAttribute)actuatorEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getActuator_Output() {
    return (EReference)actuatorEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getBehaviourState() {
    return behaviourStateEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviourState_Active() {
    return (EAttribute)behaviourStateEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviourState_Finished() {
    return (EAttribute)behaviourStateEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getBehaviourInput() {
    return behaviourInputEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviourInput_Name() {
    return (EAttribute)behaviourInputEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviourInput_Sensor() {
    return (EReference)behaviourInputEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviourInput_Behaviour() {
    return (EReference)behaviourInputEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getBehaviourOutput() {
    return behaviourOutputEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getBehaviourOutput_Name() {
    return (EAttribute)behaviourOutputEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviourOutput_Actuator() {
    return (EReference)behaviourOutputEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getBehaviourOutput_Behaviour() {
    return (EReference)behaviourOutputEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public BehaviourdiagramFactory getBehaviourdiagramFactory() {
    return (BehaviourdiagramFactory)getEFactoryInstance();
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isCreated = false;

	/**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void createPackageContents() {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    missionEClass = createEClass(MISSION);
    createEReference(missionEClass, MISSION__SENSOR);
    createEReference(missionEClass, MISSION__BEHAVIOURS);
    createEReference(missionEClass, MISSION__ACTUATOR);

    sensorEClass = createEClass(SENSOR);
    createEAttribute(sensorEClass, SENSOR__NAME);
    createEAttribute(sensorEClass, SENSOR__TYPE);
    createEReference(sensorEClass, SENSOR__INPUT);

    behaviourEClass = createEClass(BEHAVIOUR);
    createEAttribute(behaviourEClass, BEHAVIOUR__NAME);
    createEAttribute(behaviourEClass, BEHAVIOUR__PRIORITY);
    createEReference(behaviourEClass, BEHAVIOUR__REPRESENTED_BY);
    createEReference(behaviourEClass, BEHAVIOUR__STATE);
    createEReference(behaviourEClass, BEHAVIOUR__INPUTS);
    createEReference(behaviourEClass, BEHAVIOUR__OUTPUTS);
    createEAttribute(behaviourEClass, BEHAVIOUR__INPUT_CONDITION);
    createEAttribute(behaviourEClass, BEHAVIOUR__OUTPUT_CONDITION);

    actuatorEClass = createEClass(ACTUATOR);
    createEAttribute(actuatorEClass, ACTUATOR__NAME);
    createEAttribute(actuatorEClass, ACTUATOR__TYPE);
    createEReference(actuatorEClass, ACTUATOR__OUTPUT);

    behaviourStateEClass = createEClass(BEHAVIOUR_STATE);
    createEAttribute(behaviourStateEClass, BEHAVIOUR_STATE__ACTIVE);
    createEAttribute(behaviourStateEClass, BEHAVIOUR_STATE__FINISHED);

    behaviourInputEClass = createEClass(BEHAVIOUR_INPUT);
    createEAttribute(behaviourInputEClass, BEHAVIOUR_INPUT__NAME);
    createEReference(behaviourInputEClass, BEHAVIOUR_INPUT__SENSOR);
    createEReference(behaviourInputEClass, BEHAVIOUR_INPUT__BEHAVIOUR);

    behaviourOutputEClass = createEClass(BEHAVIOUR_OUTPUT);
    createEAttribute(behaviourOutputEClass, BEHAVIOUR_OUTPUT__NAME);
    createEReference(behaviourOutputEClass, BEHAVIOUR_OUTPUT__ACTUATOR);
    createEReference(behaviourOutputEClass, BEHAVIOUR_OUTPUT__BEHAVIOUR);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isInitialized = false;

	/**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void initializePackageContents() {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Obtain other dependent packages
    FsmPackage theFsmPackage = (FsmPackage)EPackage.Registry.INSTANCE.getEPackage(FsmPackage.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes

    // Initialize classes and features; add operations and parameters
    initEClass(missionEClass, Mission.class, "Mission", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getMission_Sensor(), this.getSensor(), null, "sensor", null, 0, -1, Mission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getMission_Behaviours(), this.getBehaviour(), null, "behaviours", null, 0, -1, Mission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getMission_Actuator(), this.getActuator(), null, "actuator", null, 0, -1, Mission.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(sensorEClass, Sensor.class, "Sensor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSensor_Name(), ecorePackage.getEString(), "name", null, 0, 1, Sensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getSensor_Type(), ecorePackage.getEString(), "type", null, 0, 1, Sensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSensor_Input(), this.getBehaviourInput(), this.getBehaviourInput_Sensor(), "input", null, 0, -1, Sensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(behaviourEClass, Behaviour.class, "Behaviour", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBehaviour_Name(), ecorePackage.getEString(), "name", null, 0, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBehaviour_Priority(), ecorePackage.getEInt(), "priority", null, 0, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviour_RepresentedBy(), theFsmPackage.getFSM(), null, "representedBy", null, 0, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviour_State(), this.getBehaviourState(), null, "state", null, 1, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviour_Inputs(), this.getBehaviourInput(), this.getBehaviourInput_Behaviour(), "inputs", null, 0, -1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviour_Outputs(), this.getBehaviourOutput(), this.getBehaviourOutput_Behaviour(), "outputs", null, 0, -1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBehaviour_InputCondition(), ecorePackage.getEString(), "inputCondition", null, 0, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBehaviour_OutputCondition(), ecorePackage.getEString(), "outputCondition", null, 0, 1, Behaviour.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(actuatorEClass, Actuator.class, "Actuator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getActuator_Name(), ecorePackage.getEString(), "name", null, 0, 1, Actuator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getActuator_Type(), ecorePackage.getEString(), "type", null, 0, 1, Actuator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getActuator_Output(), this.getBehaviourOutput(), this.getBehaviourOutput_Actuator(), "output", null, 0, -1, Actuator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(behaviourStateEClass, BehaviourState.class, "BehaviourState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBehaviourState_Active(), ecorePackage.getEBoolean(), "active", null, 0, 1, BehaviourState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getBehaviourState_Finished(), ecorePackage.getEBoolean(), "finished", null, 0, 1, BehaviourState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    addEOperation(behaviourStateEClass, null, "getState", 0, 1, IS_UNIQUE, IS_ORDERED);

    addEOperation(behaviourStateEClass, ecorePackage.getEBoolean(), "setState", 0, 1, IS_UNIQUE, IS_ORDERED);

    initEClass(behaviourInputEClass, BehaviourInput.class, "BehaviourInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBehaviourInput_Name(), ecorePackage.getEString(), "name", null, 0, 1, BehaviourInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviourInput_Sensor(), this.getSensor(), this.getSensor_Input(), "sensor", null, 1, 1, BehaviourInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviourInput_Behaviour(), this.getBehaviour(), this.getBehaviour_Inputs(), "behaviour", null, 1, 1, BehaviourInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(behaviourOutputEClass, BehaviourOutput.class, "BehaviourOutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getBehaviourOutput_Name(), ecorePackage.getEString(), "name", null, 0, 1, BehaviourOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviourOutput_Actuator(), this.getActuator(), this.getActuator_Output(), "actuator", null, 1, 1, BehaviourOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getBehaviourOutput_Behaviour(), this.getBehaviour(), this.getBehaviour_Outputs(), "behaviour", null, 1, 1, BehaviourOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // gmf
    createGmfAnnotations();
    // gmf.diagram
    createGmf_1Annotations();
    // gmf.node
    createGmf_2Annotations();
    // gmf.link
    createGmf_3Annotations();
    // gmf.affixed
    createGmf_4Annotations();
  }

	/**
   * Initializes the annotations for <b>gmf</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmfAnnotations() {
    String source = "gmf";		
    addAnnotation
      (this, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });										
  }

	/**
   * Initializes the annotations for <b>gmf.diagram</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_1Annotations() {
    String source = "gmf.diagram";			
    addAnnotation
      (missionEClass, 
       source, 
       new String[] 
       {
       "model.extension", "uge.xmi",
       "diagram.extension", "uge_diag"
       });									
  }

	/**
   * Initializes the annotations for <b>gmf.node</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_2Annotations() {
    String source = "gmf.node";				
    addAnnotation
      (sensorEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "label.icon", "false",
       "figure", "graphiceditor4robot.plugin.figures.SensorFigure"
       });			
    addAnnotation
      (behaviourEClass, 
       source, 
       new String[] 
       {
       "label", "name, priority",
       "label.icon", "false",
       "label.pattern", "{0} : {1}",
       "size", "100,100"
       });				
    addAnnotation
      (actuatorEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "label.icon", "false",
       "label.placement", "external",
       "figure", "graphiceditor4robot.plugin.figures.ActuatorFigure"
       });		
    addAnnotation
      (behaviourInputEClass, 
       source, 
       new String[] 
       {
       "label.icon", "false",
       "label", "name",
       "label.placement", "external",
       "tool.small.bundle", "GraphicEditor4Robot",
       "tool.small.path", "icons/BehaviourInput.gif",
       "tool.large.bundle", "GraphicEditor4Robot",
       "tool.large.path", "icons/BehaviourInput.gif",
       "figure", "graphiceditor4robot.plugin.figures.BehaviourInputFigure"
       });		
    addAnnotation
      (behaviourOutputEClass, 
       source, 
       new String[] 
       {
       "label.icon", "false",
       "label", "name",
       "label.placement", "external",
       "tool.small.bundle", "GraphicEditor4Robot",
       "tool.small.path", "icons/BehaviourOutput.gif",
       "tool.large.bundle", "GraphicEditor4Robot",
       "tool.large.path", "icons/BehaviourOutput.gif",
       "figure", "graphiceditor4robot.plugin.figures.BehaviourOutputFigure"
       });	
  }

	/**
   * Initializes the annotations for <b>gmf.link</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_3Annotations() {
    String source = "gmf.link";					
    addAnnotation
      (getSensor_Input(), 
       source, 
       new String[] 
       {
       "target.decoration", "arrow",
       "width", "2",
       "tool.name", "Sensor link"
       });								
    addAnnotation
      (getBehaviourOutput_Actuator(), 
       source, 
       new String[] 
       {
       "target.decoration", "arrow",
       "width", "2",
       "tool.name", "Actuator link"
       });
  }

  /**
   * Initializes the annotations for <b>gmf.affixed</b>.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected void createGmf_4Annotations()
  {
    String source = "gmf.affixed";							
    addAnnotation
      (getBehaviour_Inputs(), 
       source, 
       new String[] 
       {
       "foo", "bar"
       });		
    addAnnotation
      (getBehaviour_Outputs(), 
       source, 
       new String[] 
       {
       "foo", "bar"
       });				
  }

} //BehaviourdiagramPackageImpl
